package criterios;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Hashtable;

import baseDeDatos.GestorBD;
import datosFamilias.*;

public abstract class CriterioAbstracto 
{
    protected String nombre;
    protected GestorBD baseDeDatos;
    
    public String obtenerNombre()
    {
        return nombre;
    }
    
    public ArrayList<Familia> inicializarFamilias() throws SQLException
    {
        ArrayList<Familia> familias = new ArrayList<Familia>();
        ResultSet titulares = baseDeDatos.consultar("SELECT e.id, e.name, e.surname, YEAR( CURDATE( ) ) - YEAR( e.borndate ) + IF( DATE_FORMAT( CURDATE( ) , '%m-%d' ) > DATE_FORMAT( e.borndate, '%m-%d' ) , 0, -1 ), e.direction_id "
                                                  + "FROM people e JOIN encuestasrtas r ON ( e.id = r.persona_id ) "
                                                  + "WHERE (r.pregunta_id = 35 AND r.opcion = 1)"
                                                  + "ORDER BY e.direction_id");
        
        while (titulares.next())
        {
            Persona titular = new Persona(titulares.getInt(1), titulares.getString(2)+" "+titulares.getString(3), titulares.getInt(4), titulares.getString(5));
            Familia fam = new Familia(titulares.getString(5), titular);
            familias.add(fam);
        }

        return familias;
    }
    
    public abstract void ejecutarConsultas(ArrayList<Familia> familias, int criterio);
}